/**
 * 认证相关的统一配置
 * 集中管理所有与认证、会话、超时相关的参数
 */

// 判断当前是否为开发环境
const isDevelopment =
  (typeof window !== 'undefined' && window.location.hostname === 'localhost') ||
  window.location.hostname === '127.0.0.1'

export const AUTH_CONFIG = {
  // 基础配置
  TOKEN_KEY: 'token',
  TOKEN_PREFIX: 'Bearer ',
  USER_INFO_KEY: 'user_info',
  TOKEN_EXPIRE_KEY: 'token_expire_time',

  // 超时和验证配置
  AUTO_LOGOUT_TIME: 30 * 60 * 1000, // 30分钟无操作自动登出
  TOKEN_TIMEOUT: 12 * 60 * 60 * 1000, // token默认12小时超时
  VERIFY_TOKEN_URL: '/auth/verify_token', // 验证token的接口地址

  // 路由配置
  ADMIN_LOGIN_PATH: '/admin/login',
  CLIENT_LOGIN_PATH: '/login',

  // 调试配置
  DEBUG_ENABLED: isDevelopment,
}

/**
 * 根据环境或其他因素获取配置
 * 这允许我们为不同环境提供不同配置
 */
export function getAuthConfig() {
  // 这里可以根据环境变量或其他条件返回不同的配置
  // 例如开发环境可以有更短的超时时间便于测试

  if (isDevelopment) {
    return {
      ...AUTH_CONFIG,
      // 开发环境可以覆盖一些配置
      AUTO_LOGOUT_TIME: 1 * 30 * 1000, // 开发环境30秒超时，方便测试
      TOKEN_TIMEOUT: 8 * 60 * 60 * 1000, // 开发环境8小时token超时
      DEBUG_ENABLED: true,
    }
  }

  return AUTH_CONFIG
}

export default getAuthConfig
